package model;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeMap;

import utils.IFormatter;

/**
 * rieve mappe fresche da formatted ed estrare col primo for per ogni
 *  facoltà una List delle squadre e poi nel secondo for estrae 
 *  da queste squadre i rispettivi punteggi. Dopo il seconfo for
 *  fa la media per facoltà sfruttando il primo for e poi inserisce 
 *  le facoltà con le media in una mappa con chiavi i punteggi
 * 
 * @author koelio
 * 
 */
public class FacChart {

	IFormatter formatted;
	Map<String, List<String>> faculties;
	Map<Integer, String> sortedMap;

	public FacChart(IFormatter formatted) {
		super();
		this.formatted = formatted;

		this.faculties = formatted.getFaculties();

		Set<String> keys = faculties.keySet();

		Map<String, Integer> facultMap = new HashMap<String, Integer>();

		for (String key : keys) {

			List<String> teams = faculties.get(key);
			List<Integer> points = new ArrayList<Integer>();

			for (int j = 0; j < teams.size(); j++) {
				StringTokenizer tok = new StringTokenizer(teams.get(j));
				points.add(formatted.getRounds().get(tok.nextToken()));
			}

			int sum = 0;
			for (int i = 0; i < points.size(); i++) {
				sum = +points.get(i);
			}
			int average = sum / points.size();

			facultMap.put(key, average);
		}

		sortFacs(facultMap);

	}

	public void sortFacs(Map<String, Integer> facultMap) {

		Set<String> keys = facultMap.keySet();

		this.sortedMap = new TreeMap<Integer, String>();

		for (String key : keys) {
			int value = facultMap.get(key);
			sortedMap.put(value, key);
		}

	}

	public Map<Integer, String> getFacChart() {
		return this.sortedMap;
	}

}
